package com.flejay.dreamrecruiter.service;

import java.util.List;

import com.flejay.dreamrecruiter.model.AbstractBlock;
import com.flejay.dreamrecruiter.model.AbstractTag;
import com.flejay.dreamrecruiter.model.Block;
import com.flejay.dreamrecruiter.model.SubTag;
import com.flejay.dreamrecruiter.pojo.Bag;

/**
 * 
 * @author Victor Fleurant
 *
 */
public interface ITransformerService {

	/**
	 * Matches lines with tags and extract to appropriate content into Blocks
	 * 
	 * @param lines
	 * @param tags could be a list of Tag or SubTag but never AbstractTag
	 * @return list of block or SubBlock but never AbstractBlock
	 */
	List<AbstractBlock> extractBlocksFromLinesMatching(String[] lines,List<AbstractTag> tags);

	/**
	 * Extract a Bag which contains in order 2 objects : {subBlockList, and the new string content of the tag}
	 * 
	 * @param subLines
	 * @param subTags
	 * @return
	 */
	Bag extractSubBlocksFromLinesMatching(String[] subLines,List<SubTag> subTags);

	/**
	 * Extract overSizedBlock form param
	 * 
	 * @param blockList
	 * @return
	 */
	List<AbstractBlock> extractOverSizedBlocks(List<Block> blockList);

}
